/*
测试环境：
    云服务器——2核2G的，带宽1M的
    客户端——
    环境：使用 Webbench 以10000并发量向服务器发送请求，进行了24h测试
    命令：./webbench -c 1000 -t 60 http://127.0.0.1:8202/hello
    结果：

性能压力测试：
    并发量：可以同时处理多少客户端的请求
    QPS：每秒钟处理的包的数量

Webbench：
    创建大量进程，创建客户端连接服务器，发送请求，收到响应后关闭连接，开始下一个连接建立
*/

#include "httpserver.hpp"

int main()
{
    signal(SIGCHLD, SIG_IGN);
    for(int i = 0; i < 10; i++)
    {
        pid_t pid = fork();
        if(pid < 0)
        {
            DEBUG_LOG("fork Failed !");
            return -1;
        }
        else if(pid == 0)
        {
            Socket client_sock;
            client_sock.CreateClient(8202, "127.0.0.1");

            while(1)
            {
                std::string req = "GET /hello HTTP/1.1\r\nConnection: keep-alive\r\nContent-Length: 0\r\n\r\n";
                
                assert(client_sock.Send(&req[0], req.size()) != -1);
                char buf[1024] = {0};
                assert(client_sock.Recv(buf, 1023));
                DEBUG_LOG("[%s]", buf);
            }
            
            client_sock.Close();
            exit(0);
        }
    }
    while(1) sleep(1);
    
    return 0;
}